/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proyectoformulariodinamico;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Stack;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 *
 * @author David
 */
public class CasillaVerificacion extends JPanel{
    
    private JPanel pnlComponente;
    private JCheckBox chkOpcion;
    private JTextField txtOpcion;
    private JLabelTest lblDelete;
    private JLabel lblopcion;
    
    private Stack<JTextField> opciones = new Stack();
    private Stack<JCheckBox> botones = new Stack();
    private Stack<JLabel> etiquetas = new Stack();
    private Stack<JLabelTest> eliminadores = new Stack();
    
    private Stack<JPanel> paneles = new Stack(); 
        
    private int cont=0;

    public CasillaVerificacion() {
        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
        pnlComponente = new JPanel();
        pnlComponente.setLayout(new BoxLayout(pnlComponente,BoxLayout.X_AXIS));
        paneles.add(pnlComponente);
        
        chkOpcion = new JCheckBox();
        txtOpcion = new JTextField(30);  
        lblopcion = new JLabel();
        lblopcion.setVisible(false);
        lblDelete = new JLabelTest(cont,"dist\\x2-12.png");        
        
        txtOpcion.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent evt) {
                txtOpcionKeyPressed(evt);
            }
        });
        
        lblDelete.addMouseListener(new java.awt.event.MouseAdapter() {
            @Override
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lblDeleteMouseClicked(evt);
            }
        });
        
        opciones.add(txtOpcion);
        botones.add(chkOpcion);
        etiquetas.add(lblopcion);
        eliminadores.add(lblDelete);
        
        paneles.peek().add(botones.peek());
        paneles.peek().add(opciones.peek());
        paneles.peek().add(etiquetas.peek());
        paneles.peek().add(eliminadores.peek());
        
        System.out.println("Label: "+eliminadores.peek().getIndex());
        
        cont++;
        
        add(paneles.peek());
        updateUI();       
        
    }
    
    private void txtOpcionKeyPressed(KeyEvent evt) {
        if(evt.getKeyCode() == KeyEvent.VK_ENTER){
            //System.out.println("Se a presionado la tecla enter");
            pnlComponente = new JPanel();
            pnlComponente.setLayout(new BoxLayout(pnlComponente,BoxLayout.X_AXIS));
            
            paneles.add(pnlComponente);
            chkOpcion = new JCheckBox();
            txtOpcion = new JTextField(30); 
            lblopcion = new JLabel();
            lblopcion.setVisible(false);
            lblDelete = new JLabelTest(cont,"dist\\x2-12.png");
            
                                 
            txtOpcion.addKeyListener(new KeyAdapter() {
            @Override
                public void keyPressed(KeyEvent evt) {
                    txtOpcionKeyPressed(evt);
                }
            });
            lblDelete.addMouseListener(new java.awt.event.MouseAdapter() {
            @Override
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    lblDeleteMouseClicked(evt);
                }
            });
            
            opciones.add(txtOpcion);
            botones.add(chkOpcion);
            etiquetas.add(lblopcion);
            eliminadores.add(lblDelete);

            paneles.peek().add(botones.peek());
            paneles.peek().add(opciones.peek());
            paneles.peek().add(etiquetas.peek());
            paneles.peek().add(eliminadores.peek());
            
            cont++;
            System.out.println("Label: "+eliminadores.peek().getIndex());
            
            //System.out.println(paneles.size());
            this.add(paneles.peek());
            this.updateUI();
            
            txtOpcion.requestFocus();
        }
    }
    
    private void lblDeleteMouseClicked(java.awt.event.MouseEvent evt) {
        int index = lblDelete.getIndex();
        System.out.println("Insex "+index+"\n");
        chkOpcion = botones.get(index);
        txtOpcion = opciones.get(index);
        lblDelete = eliminadores.get(index);

        lblDelete.setVisible(false);
        txtOpcion.setVisible(false);
        chkOpcion.setVisible(false);
        
        botones.remove(index);
        opciones.remove(index);
        eliminadores.remove(index);
        cont--;
        lblDelete = eliminadores.peek();
        
    }   
    
    public void vistaOK(){
        System.out.println(botones.size());
        System.out.println(opciones.size());
        System.out.println(etiquetas.size());
        System.out.println(eliminadores.size());
        for(int i= 0;i<opciones.size();i++){
            botones.get(i).setText(opciones.get(i).getText());
            
            opciones.get(i).setVisible(false);
            eliminadores.get(i).setVisible(false);
            etiquetas.get(i).setVisible(true);
        }
    }
    
    public String getAnswer(){
        String a="";
        for(int i=0;i<botones.size();i++){
            if(botones.get(i).isSelected()){
                a+=botones.get(i).getText()+", ";
            }
        }        
        return a;
    }
    
    public void Clear(){
        for(int i=0;i<botones.size();i++){
            botones.get(i).setSelected(false);
        }
    }
}